static BOOL testAdherenceFPPoint(FP_POINT* point)
{
	calls += 1L;
	if (ABS(point->x) > FP_ONE || ABS(point->y) > FP_ONE || ABS(point->z) > FP_ONE) 
	{
		return FALSE;
	}

	if ( (FP_Mul(point->x,point->x) + FP_Mul(point->y,point->y) + FP_Mul(point->z,point->z)) > FP_ONE)
	{
		return FALSE;
	}

	FP_POINT* eq;
	for (S32 i=polyhedronNbFacets-1; i>=0; --i)
	{
		eq = &equations[i];
		FP test = FP_Mul(eq->x, point->x) + FP_Mul(eq->y, point->y) + FP_Mul(eq->z, point->z);
		if (test > 0)
		{
			return FALSE;
		}
	}
	return TRUE;
}

static BOOL testAdherenceCoordinates(FP x, FP y, FP z)
{
	calls += 1L;
	if (ABS(x) > FP_ONE || ABS(y) > FP_ONE || ABS(z) > FP_ONE) 
	{
		return FALSE;
	}

	if ( (FP_Mul(x,x) + FP_Mul(y,y) + FP_Mul(z,z)) > FP_ONE)
	{
		return FALSE;
	}

	FP_POINT* eq;
	for (U32 i=0; i<polyhedronNbFacets; i++)
	{
		eq = &equations[i];
		FP test = FP_Mul(eq->x, x) + FP_Mul(eq->y, y) + FP_Mul(eq->z, z);
		if (test > 0)
		{
			return FALSE;
		}
	}
	return TRUE;
}